Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

 << zurück
Visual C# 2005 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2005

Visual C# 2005
1.320 S., mit 2 CDs, 59,90 Euro
Galileo Computing
ISBN 3-89842-586-X
gp Kapitel 3 Grundlagen der Sprache C#
  gp 3.1 Konsolenanwendungen
    gp 3.1.1 Allgemeine Anmerkungen
    gp 3.1.2 Ein erstes Konsolenprogramm
  gp 3.2 Grundlagen der C#-Syntax
    gp 3.2.1 Kennzeichnen, dass eine Anweisung abgeschlossen ist
    gp 3.2.2 Anweisungs- und Gliederungsblöcke
    gp 3.2.3 Kommentare
    gp 3.2.4 Die Groß- und Kleinschreibung
    gp 3.2.5 Die Struktur einer Konsolenanwendung
  gp 3.3 Variablen und Datentypen
    gp 3.3.1 Variablendeklaration
    gp 3.3.2 Der Variablenbezeichner
    gp 3.3.3 Der Zugriff auf eine Variable
    gp 3.3.4 Ein- und Ausgabemethoden der Klasse »Console«
    gp 3.3.5 Die einfachen Datentypen
    gp 3.3.6 Typkonvertierung
  gp 3.4 Operatoren
    gp 3.4.1 Arithmetische Operatoren
    gp 3.4.2 Vergleichsoperatoren
    gp 3.4.3 Logische Operatoren
    gp 3.4.4 Bitweise Operatoren
    gp 3.4.5 Zuweisungsoperatoren
    gp 3.4.6 Stringverkettung
    gp 3.4.7 Sonstige Operatoren
    gp 3.4.8 Operator-Vorrangregeln
  gp 3.5 Datenfelder (Arrays)
    gp 3.5.1 Die Deklaration und Initialisierung eines Arrays
    gp 3.5.2 Der Zugriff auf die Array-Elemente
    gp 3.5.3 Speicherabbild eines Arrays
    gp 3.5.4 Mehrdimensionale Arrays
    gp 3.5.5 Festlegen der Array-Größe zur Laufzeit
    gp 3.5.6 Bestimmung der Array-Obergrenze
    gp 3.5.7 Die Gesamtanzahl der Array-Elemente
    gp 3.5.8 Verzweigte Arrays
  gp 3.6 Kontrollstrukturen
    gp 3.6.1 Die »if«-Anweisung
    gp 3.6.2 Das »switch«-Statement
  gp 3.7 Programmschleifen
    gp 3.7.1 Die »for«-Schleife
    gp 3.7.2 Die »foreach«-Schleife
    gp 3.7.3 Die »do«- und die »while«-Schleife


Galileo Computing

3.2 Grundlagen der C#-Syntadowntop

C#-Programme setzen sich, wie auch Programme, die in anderen Sprachen entwickelt werden, aus einer Anzahl von Anweisungen zusammen, die der Reihe nach ausgeführt werden. Anweisungen legen fest, was das Programm zu tun hat und auf welche Art und Weise.


Galileo Computing

3.2.1 Kennzeichnen, dass eine Anweisung abgeschlossen ist  downtop

Sie haben im vorherigen Abschnitt bereits Ihr erstes Programm, bestehend aus zwei Anweisungen, geschrieben:


Console.WriteLine("C# ist spitze.");
Console.ReadLine();

Jede Anweisung verlangt nach einer Kennzeichnung, die das Ende der Anweisung bekannt gibt. Dazu wird in C# das Semikolon eingesetzt. Vergessen Sie das Semikolon, erhalten Sie einen Kompilierfehler. Im vorhergehenden Abschnitt hatten wir das sogar provoziert.

Wenn auch sinnlos, so dürfen Sie durchaus mehrere Semikolons hintereinander schreiben, ohne dass explizit eine Anweisung dazwischen stehen muss:


;;;;

Weil durch ein Semikolon eine Anweisung eindeutig abgeschlossen wird, dürfen auch mehrere Anweisungen in eine Zeile geschrieben werden. Im Umkehrschluss kann eine Anweisung auch problemlos auf mehrere Zeilen verteilt werden, ohne dass sich der Compiler daran stört.

In der Gestaltung des Programmcodes lässt C# sehr viele Freiheiten zu. Leerzeichen, Tabulatoren und Zeilenumbrüche können nach Belieben eingestreut werden, ohne dass sich das auf die Kompilierung des Quellcodes oder die Ausführung des Programms auswirkt. Daher dürfte der Code unseres Beispiels auch wie folgt aussehen:


Console.
WriteLine("C# ist spitze.")    ;
  Console.
ReadLine   (
)
;

Dass eine Streuung wie die gezeigte die gute Lesbarkeit des Codes enorm beeinträchtigt, steht außer Frage. Aber C# führt diesen Code dennoch genauso aus wie zuvor. Andererseits kann man insbesondere mit den Tabulatoren über Einrückungen zu einer guten Lesbarkeit des Programmcodes beitragen. Vergleichen Sie dazu wieder das Beispiel von oben. Anweisungen, die innerhalb eines Anweisungsblocks in geschweiften Klammern stehen, werden üblicherweise rechts eingerückt. Wenn Sie sich an den Beispielen in diesem Buch orientieren, werden Sie sehr schnell ein Gefühl dafür bsekommen, wie Sie mit Einrückungen nicht nur optisch ansprechenden, sondern auch leichter lesbaren Code schreiben. Feste Regeln gibt es dazu allerdings nicht, es sind stillschweigende Konventionen.


Galileo Computing

3.2.2 Anweisungs- und Gliederungsblöcke  downtop

C#-Programmcode ist blockorientiert, d.  h., dass C#-Anweisungen grundsätzlich immer innerhalb eines geschweiften Klammerpaars geschrieben werden. Jeder Block kann eine beliebige Anzahl von Anweisungen enthalten – oder auch keine. Somit hat ein Anweisungsblock allgemein die folgende Form:


{
   Anweisung 1;
   Anweisung 2;
   ...
}

Anweisungsblöcke lassen sich auch beliebig ineinander verschachteln. Dabei beschreibt jeder Anweisungsblock eine ihm eigene Ebene, z.B.:


{
   Anweisung 1;
   {
      Anweisung 2;
      Anweisung 3;
   }
   Anweisung 4;
}

Beachten Sie, wie Einzüge hier dazu benutzt werden, optisch die Zugehörigkeit einer oder mehrerer Anweisungen zu einem bestimmten Block aufzuzeigen. Die Anweisungen 2 und 3 sind zu einem Block zusammengefasst, der sich innerhalb eines äußeren befindet. Zum äußeren Anweisungsblock gehören Anweisung 1 und Anweisung 4 sowie natürlich auch der komplette innere Anweisungsblock.

Über die Blockbildung von Anweisungen hinaus werden die geschweiften Klammern dazu benutzt, Definitionsbereiche zu bilden. Beispielsweise lassen sich mehrere Klassendefinitionen einem bestimmten Namespace zuordnen. Dieses Thema an dieser Stelle zu erörtern, ist allerdings noch zu früh.


Galileo Computing

3.2.3 Kommentare  downtop

Sie sollten nicht mit Kommentaren geizen. Kommentare helfen, den Programmcode der Anwendung besser zu verstehen. Sie tun nicht nur anderen Entwicklern damit einen Gefallen, die sich mit Ihrem Code auseinander setzen müssen, sondern auch sich selbst. Wenn Sie bereits Programmiererfahrung haben, werden Sie wissen, wie schwierig es ist, nach dem dreiwöchigen Mallorca-Urlaub wieder den eigenen Code zu verstehen. Was beschreibt diese Variable, welche Funktionalität steckt hinter jener Methode? Ersparen Sie sich und anderen die unnötige und zeitraubende Suche nach den Antworten.

C# bietet zwei Möglichkeiten, Kommentare, die vom Compiler während des Kompiliervorgangs ignoriert werden, in den Quellcode einzustreuen. Die am häufigsten benutzte ist die Einleitung eines Kommentars mit zwei Schrägstrichen »//«:


// dies ist ein Kommentar

Ein »//«-Kommentar gilt für den Rest der gesamten Codezeile, kann jedes beliebige Zeichen enthalten und darf auch nach einer abgeschlossenen Anweisung stehen.


Console.WriteLine("..."); //Konsolenausgabe

Sollen viele zusammenhängende Zeilen zu einem längeren Kommentar zusammengefasst werden, bietet sich die zweite Alternative an, bei der ein Kommentar mit »/*« ein- und mit »*/« ausgeleitet wird. Alle sich dazwischen befindlichen Zeichen sind Bestandteil des Kommentars.


/* Console.WriteLine("..."); 
Console.ReadLine();*/

Tatsächlich kann man sogar mitten in einer Anweisung diesen Kommentar schreiben, ohne dass der C#-Compiler das als Fehler ansieht:


Console.WriteLine /* Kommentar */("...");


Hinweis   Eine weitere Variante eines Kommentars in C# beschreibt drei aufeinander folgende Schrägstriche »///«. Codezeilen, die so ausdokumentiert sind, werden zwar ebenfalls vom C#-Compiler ignoriert, ihnen kommt aber eine weiterreichende Bedeutung zu: Sie dienen dem Erstellen einer XML-basierten Dokumentation.

Die Entwicklungsumgebung des Visual Studio 2005 bietet eine recht interessante und einfache Alternative, insbesondere größere Blöcke auf einmal auszukommentieren. Sie müssen dazu nur sicherstellen, dass in der Entwicklungsumgebung die Symbolleiste Text-Editor angezeigt wird. Dazu brauchen Sie nur mit der rechten Maustaste das Kontextmenü einer der aktuellen Symbolleisten zu öffnen. Im Kontextmenü finden Sie alle Symbolleisten der Entwicklungsumgebung aufgelistet. Da die Anzahl nicht als gering bezeichnet werden kann, lassen sich die einzelnen nach Bedarf ein- oder ausblenden.

Die Symbolleiste Text-Editor enthält zwei Schaltflächen, um markierte Codeblöcke auszukommentieren oder eine Kommentierung wieder aufzuheben (siehe auch Abbildung 3.3).

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 3.3   Kommentare mit Hilfe der Symbolleiste


In diesem Buch werden alle Kommentare grau hinterlegt, um auf einen Blick deutlich zwischen Code und Kommentar unterscheiden zu können. Außerdem bezieht sich jeder Kommentar auf die folgende Codezeile.

In der Entwicklungsumgebung erscheinen Kommentare in einer anderen Schriftfarbe als der Programmcode selbst. Sie können die Farbgebung ganz individuell festlegen, wenn Sie das in Abbildung 3.2 gezeigte Dialogfenster öffnen und im Knoten Umgebung der linken Liste Schriftarten und Farben auswählen. Rechts neben dem Listenfeld bieten sich anschließend mehrere Optionen, die Darstellung des Programmcodes im Codefenster zu beeinflussen.


Galileo Computing

3.2.4 Die Groß- und Kleinschreibung  downtop

C# gehört zu der Gruppe von Programmiersprachen, die zwischen Groß- und Kleinschreibung unterscheiden. Codieren Sie die Anweisung zur Konsolenausgabe mit


Console.Writeline("...");

werden Sie mit einer Fehlermeldung bei der Kompilierung konfrontiert. Korrekt müsste es lauten:


Console.WriteLine("...");

Es ist Ansichtssache, diese klein karierte Interpretation von C# positiv oder negativ zu beurteilen, denn beispielsweise macht VB.NET hier keinen Unterschied. Positiv ist jedenfalls zu bemerken, dass zwei gleich lautende Bezeichner, die sich nur durch Groß- und Kleinschreibung unterscheiden, in C# auch für zwei unterschiedliche Programmelemente stehen, in VB.NET hingegen nicht. Manchmal erleichtert C# die Festlegung eines Bezeichners für eine Variable und kann außerdem der eindeutigen Zuordnung zweier miteinander in einer logischen Beziehung stehenden Variablen dienen.


Galileo Computing

3.2.5 Die Struktur einer Konsolenanwendung  toptop

Sehen wir uns noch einmal den Code an, den uns die Entwicklungsumgebung nach dem Öffnen eines neuen Projekts vom Typ Konsolenanwendung anbietet:


using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {      
    }
  }
}

Wir erkennen nun eindeutig mehrere ineinander geschachtelte Blockstrukturen. Der äußere Block definiert einen Namespace mit dem Namen ConsoleApplication1. Namespaces dienen dazu, die Typen der .NET-Klassenbibliothek funktionell orientiert zu organisieren und innerhalb eines Namespace namentliche Eindeutigkeit zu gewährleisten.

a
Achtung   Der Bezeichner eines Namespace, in unserem Beispiel ConsoleApplication1, wird beim Start eines neuen Projekts automatisch vergeben und entspricht dem Projektnamen. Sie können diese Vorgabe ändern, solange der frei gewählte Name seinerseits innerhalb seines Definitionsbereichs eindeutig ist.

Im Namespace eingebettet ist eine Klassendefinition, die einen eigenen Anweisungsblock beschreibt:


namespace ConsoleApplication1 
{
  class Program 
  {
  }
}

C# ist eine 100  %ig objektorientierte Sprache. Das bedeutet, dass grundsätzlich immer eine Klassendefinition vorliegen muss, um mit einem Objekt arbeiten zu können. Eine Klasse beschreibt einen Typ, in unserem Fall heißt dieser Typ Program. Der Bezeichner Program ist nur als Vorschlag der Entwicklungsumgebung anzusehen und darf im Rahmen der Eindeutigkeit innerhalb des aktuellen Namespace (hier also ConsoleApplication1) nahezu frei vergeben werden. Über die Einschränkungen werden wir uns später noch Gedanken machen müssen.

Wie Sie sehen, kommen wir schon an dieser Stelle zum ersten Mal in Kontakt mit Klassen, die uns bei allen auf dem .NET Framework basierenden Anwendungen begleiten. Was eine Klasse selbst darstellt und wie man sie einsetzt, wird einen wesentlichen Teil dieses Buches ausmachen. Wir wollen es hier aber zunächst bei dieser kurzen Erwähnung belassen, denn in diesem Kapitel werden Sie die grundlegende Syntax von C# lernen, ohne die Gesichtspunkte des objektorientierten Paradigmas berücksichtigen zu müssen.

Interessanter ist für uns momentan die dritte Blockebene, die innerhalb der Klasse Program vordefiniert ist, nämlich die durch Main beschriebene:


static void Main(string[] args) 
{
}
 

Bei Main handelt es sich um eine Prozedur, die für uns von herausragender Bedeutung ist: Wenn wir die Laufzeit einer Anwendung starten, werden zuerst Main und die darin enthaltenen Anweisungen ausgeführt. Sie dürfen den Namen dieser Prozedur auch nicht ändern und müssen natürlich auch die Großschreibweise berücksichtigen, denn beim Start der Laufzeit wird immer nach Main gesucht und nicht nach main oder nach start.

Weiter oben wurde gesagt, dass Anweisungen immer innerhalb eines Blocks aus geschweiften Klammern codiert werden. Wir können diese Aussage nun präzisieren: Anweisungen werden grundsätzlich immer innerhalb des Anweisungsblocks einer Prozedur implementiert. Wir haben das schon bei unserem ersten Beispiel gesehen:


static void Main(string[] args) 
{
   Console.WriteLine("C# ist spitze.");
   Console.ReadLine();
}

An dieser Stelle wollen wir uns schon mit einem weiteren Begriff anfreunden, der Ihnen in diesem Kapitel immer wieder über den Weg laufen wird, dessen Bedeutung allerdings erst in Kapitel 4 exakt beschrieben wird: Es handelt sich hierbei um den Begriff der Methode. In herkömmlichen Programmiersprachen, die nicht auf Klassen und Objekten basieren, wird eine Prozedur als eine zusammengehörige Anweisungsfolge beschrieben, die zur Laufzeit der Reihe nach abgearbeitet wird – nicht anders verhält sich Main. Tatsächlich ist die Verwandtschaft zwischen einer Prozedur und einer Methode auch nicht von der Hand zu weisen. Weil Main jedoch innerhalb einer Klasse definiert ist, in unserem Fall in Program, dürfen wir anstatt von der Main-Prozedur auch von der Main-Methode sprechen.

Sehen wir uns nun noch kurz die Definition der Main-Methode an. Die beiden dem Bezeichner vorausgehenden Schlüsselwörter static und void sind zwingend notwendig. Sollten Sie bereits mit C++ oder Java Anwendungen entwickelt haben, werden Sie die Bedeutung dieser beiden Modifizierer kennen: Mit static werden Methoden bezeichnet, die beim Aufruf kein konkretes Objekt voraussetzen, void beschreibt eine Methode ohne Rückgabewert. Im Moment soll diese Information genügen, denn eine genauere Kenntnis hätte derzeit keine Auswirkungen auf die ersten Schritte in die Welt der C#-Programme.

Ein Konsolenprogramm wird gestartet, indem man den Namen der Anwendungsdatei mit der Dateierweiterung .EXE an der Konsole eingibt (die anderen sich bietenden Möglichkeiten über den Explorer bzw. über Start · Ausführen seien hier nur am Rande erwähnt). Manchmal ist es notwendig, dem Programm beim Start Anfangswerte mitzuteilen, die vom laufenden Programm zur Ausführung und Weiterverarbeitung benötigt werden. Angenommen, Sie wollen einer Konsolenanwendung mit dem Dateinamen MyApplication.exe die drei Zahlen 10, 14 und 17 übergeben, sähe der Aufruf an der Eingabeaufforderung wie folgt aus:

MyApplication.exe 10 14 17

Diese drei Zahlen werden von der Parameterliste, die hinter dem Bezeichner Main in runden Klammern angegeben ist, in Empfang genommen:


Main(string[] args) ...

Wie die übergebenen Daten mittels Programmcode verarbeitet werden, folgt später. Die Angabe der Parameterliste ist optional. Benötigt ein Programm bei seinem Aufruf keine Daten, kann die Parameterliste leer bleiben, die Angabe der runden Klammern ist aber unbedingt erforderlich:


static void Main() ...

 << zurück
  
  Zum Katalog
Zum Katalog: Visual C# 2005
Visual C# 2005
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2005






 Fortgeschrittene
 Programmierung
 mit Visual C# 2005


Zum Katalog: Einstieg in Visual C# 2005






 Einstieg in
 Visual C# 2005


Zum Katalog: Einstieg in Visual Basic 2005






 Einstieg in
 Visual Basic 2005


Zum Katalog: Visual Basic 2005






 Visual Basic 2005


Zum Katalog: Java ist auch eine Insel






 Java ist auch eine
 Insel


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de